{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import tensorflow as tf\n",
    "from tensorflow import keras\n",
    "from tensorflow.keras import datasets\n",
    "from tensorflow.keras import Input, Model\n",
    "from tensorflow.keras.layers import Flatten, Dense\n",
    "from tensorflow.keras.callbacks import EarlyStopping\n",
    "\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "import time\n",
    "import os"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "(x_train, y_train), (x_test, y_test) = datasets.fashion_mnist.load_data()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "x_train = x_train.reshape(-1, 28*28)\n",
    "x_test = x_test.reshape(-1, 28*28)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "x_train = x_train/255.0\n",
    "x_test = x_test/255.0"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "模型搭建"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 输入层inputx\n",
    "inputs = Input(shape=(28*28), name='input')\n",
    "# 隐层dense  \n",
    "#•第一层隐层设置：神经元个数256，初始化方法为glorot_normal，激活函数为tanh\n",
    "x = Dense(units=256,activation='elu',kernel_initializer='glorot_normal', name='dense_0')(inputs)\n",
    "#•第二层隐层设置：神经元个数128，初始化方法为glorot_normal，激活函数为tanh\n",
    "x = Dense(units=128, activation='elu',kernel_initializer='glorot_normal',name='dense_1')(x)\n",
    "# 输出层\n",
    "outputs = Dense(units=10, activation='softmax', name='logit')(x)\n",
    "# 设置模型的inputs和outputsin\n",
    "model = Model(inputs=inputs, outputs=outputs)\n",
    "# 设置损失函数loss、优化器optimizer、评价标准metrics\n",
    "model.compile(loss='sparse_categorical_crossentropy',\n",
    "              optimizer=\"sgd\", metrics=['accuracy'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Model: \"functional_1\"\n",
      "_________________________________________________________________\n",
      "Layer (type)                 Output Shape              Param #   \n",
      "=================================================================\n",
      "input (InputLayer)           [(None, 784)]             0         \n",
      "_________________________________________________________________\n",
      "dense_0 (Dense)              (None, 256)               200960    \n",
      "_________________________________________________________________\n",
      "dense_1 (Dense)              (None, 128)               32896     \n",
      "_________________________________________________________________\n",
      "logit (Dense)                (None, 10)                1290      \n",
      "=================================================================\n",
      "Total params: 235,146\n",
      "Trainable params: 235,146\n",
      "Non-trainable params: 0\n",
      "_________________________________________________________________\n"
     ]
    }
   ],
   "source": [
    "model.summary()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "#提前终止\n",
    "earlystopping = EarlyStopping(monitor=\"val_loss\",patience=10,min_delta=1e-4,restore_best_weights=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "模型训练"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 1/150\n",
      "1500/1500 [==============================] - 3s 2ms/step - loss: 0.6772 - accuracy: 0.7706 - val_loss: 0.5283 - val_accuracy: 0.8148\n",
      "Epoch 2/150\n",
      "1500/1500 [==============================] - 4s 3ms/step - loss: 0.4872 - accuracy: 0.8297 - val_loss: 0.4665 - val_accuracy: 0.8355\n",
      "Epoch 3/150\n",
      "1500/1500 [==============================] - 4s 2ms/step - loss: 0.4479 - accuracy: 0.8423 - val_loss: 0.4426 - val_accuracy: 0.8417\n",
      "Epoch 4/150\n",
      "1500/1500 [==============================] - 4s 3ms/step - loss: 0.4260 - accuracy: 0.8501 - val_loss: 0.4573 - val_accuracy: 0.8367\n",
      "Epoch 5/150\n",
      "1500/1500 [==============================] - 4s 3ms/step - loss: 0.4090 - accuracy: 0.8543 - val_loss: 0.4159 - val_accuracy: 0.8506\n",
      "Epoch 6/150\n",
      "1500/1500 [==============================] - 4s 3ms/step - loss: 0.3967 - accuracy: 0.8598 - val_loss: 0.4032 - val_accuracy: 0.8540\n",
      "Epoch 7/150\n",
      "1500/1500 [==============================] - 4s 3ms/step - loss: 0.3850 - accuracy: 0.8623 - val_loss: 0.4004 - val_accuracy: 0.8547\n",
      "Epoch 8/150\n",
      "1500/1500 [==============================] - 4s 3ms/step - loss: 0.3766 - accuracy: 0.8660 - val_loss: 0.3958 - val_accuracy: 0.8577\n",
      "Epoch 9/150\n",
      "1500/1500 [==============================] - 4s 3ms/step - loss: 0.3684 - accuracy: 0.8691 - val_loss: 0.3859 - val_accuracy: 0.8601\n",
      "Epoch 10/150\n",
      "1500/1500 [==============================] - 4s 3ms/step - loss: 0.3607 - accuracy: 0.8710 - val_loss: 0.3801 - val_accuracy: 0.8631\n",
      "Epoch 11/150\n",
      "1500/1500 [==============================] - 5s 3ms/step - loss: 0.3533 - accuracy: 0.8738 - val_loss: 0.3765 - val_accuracy: 0.8645\n",
      "Epoch 12/150\n",
      "1500/1500 [==============================] - 4s 3ms/step - loss: 0.3469 - accuracy: 0.8753 - val_loss: 0.3793 - val_accuracy: 0.8616\n",
      "Epoch 13/150\n",
      "1500/1500 [==============================] - 4s 3ms/step - loss: 0.3428 - accuracy: 0.8765 - val_loss: 0.3645 - val_accuracy: 0.8684\n",
      "Epoch 14/150\n",
      "1500/1500 [==============================] - 4s 3ms/step - loss: 0.3361 - accuracy: 0.8786 - val_loss: 0.3580 - val_accuracy: 0.8712\n",
      "Epoch 15/150\n",
      "1500/1500 [==============================] - 5s 3ms/step - loss: 0.3314 - accuracy: 0.8800 - val_loss: 0.3693 - val_accuracy: 0.8655\n",
      "Epoch 16/150\n",
      "1500/1500 [==============================] - 5s 3ms/step - loss: 0.3269 - accuracy: 0.8818 - val_loss: 0.3547 - val_accuracy: 0.8718\n",
      "Epoch 17/150\n",
      "1500/1500 [==============================] - 5s 3ms/step - loss: 0.3216 - accuracy: 0.8840 - val_loss: 0.3548 - val_accuracy: 0.8723\n",
      "Epoch 18/150\n",
      "1500/1500 [==============================] - 5s 3ms/step - loss: 0.3177 - accuracy: 0.8867 - val_loss: 0.3550 - val_accuracy: 0.8717\n",
      "Epoch 19/150\n",
      "1500/1500 [==============================] - 5s 3ms/step - loss: 0.3140 - accuracy: 0.8864 - val_loss: 0.3494 - val_accuracy: 0.8727\n",
      "Epoch 20/150\n",
      "1500/1500 [==============================] - 5s 3ms/step - loss: 0.3091 - accuracy: 0.8886 - val_loss: 0.3444 - val_accuracy: 0.8760\n",
      "Epoch 21/150\n",
      "1500/1500 [==============================] - 5s 3ms/step - loss: 0.3063 - accuracy: 0.8887 - val_loss: 0.3430 - val_accuracy: 0.8759\n",
      "Epoch 22/150\n",
      "1500/1500 [==============================] - 5s 3ms/step - loss: 0.3021 - accuracy: 0.8914 - val_loss: 0.3669 - val_accuracy: 0.8633\n",
      "Epoch 23/150\n",
      "1500/1500 [==============================] - 5s 3ms/step - loss: 0.2989 - accuracy: 0.8921 - val_loss: 0.3369 - val_accuracy: 0.8774\n",
      "Epoch 24/150\n",
      "1500/1500 [==============================] - 5s 3ms/step - loss: 0.2955 - accuracy: 0.8931 - val_loss: 0.3454 - val_accuracy: 0.8749\n",
      "Epoch 25/150\n",
      "1500/1500 [==============================] - 5s 3ms/step - loss: 0.2920 - accuracy: 0.8932 - val_loss: 0.3484 - val_accuracy: 0.8733\n",
      "Epoch 26/150\n",
      "1500/1500 [==============================] - 5s 3ms/step - loss: 0.2888 - accuracy: 0.8950 - val_loss: 0.3388 - val_accuracy: 0.8771\n",
      "Epoch 27/150\n",
      "1500/1500 [==============================] - 5s 3ms/step - loss: 0.2869 - accuracy: 0.8956 - val_loss: 0.3381 - val_accuracy: 0.8766\n",
      "Epoch 28/150\n",
      "1500/1500 [==============================] - 5s 3ms/step - loss: 0.2830 - accuracy: 0.8979 - val_loss: 0.3423 - val_accuracy: 0.8765\n",
      "Epoch 29/150\n",
      "1500/1500 [==============================] - 5s 3ms/step - loss: 0.2797 - accuracy: 0.8984 - val_loss: 0.3348 - val_accuracy: 0.8773\n",
      "Epoch 30/150\n",
      "1500/1500 [==============================] - 5s 3ms/step - loss: 0.2772 - accuracy: 0.8994 - val_loss: 0.3362 - val_accuracy: 0.8786\n",
      "Epoch 31/150\n",
      "1500/1500 [==============================] - 5s 4ms/step - loss: 0.2741 - accuracy: 0.8990 - val_loss: 0.3430 - val_accuracy: 0.8749\n",
      "Epoch 32/150\n",
      "1500/1500 [==============================] - 5s 3ms/step - loss: 0.2715 - accuracy: 0.9016 - val_loss: 0.3544 - val_accuracy: 0.8712\n",
      "Epoch 33/150\n",
      "1500/1500 [==============================] - 5s 4ms/step - loss: 0.2690 - accuracy: 0.9022 - val_loss: 0.3243 - val_accuracy: 0.8806\n",
      "Epoch 34/150\n",
      "1500/1500 [==============================] - 5s 4ms/step - loss: 0.2672 - accuracy: 0.9028 - val_loss: 0.3232 - val_accuracy: 0.8829\n",
      "Epoch 35/150\n",
      "1500/1500 [==============================] - 6s 4ms/step - loss: 0.2639 - accuracy: 0.9042 - val_loss: 0.3234 - val_accuracy: 0.8810\n",
      "Epoch 36/150\n",
      "1500/1500 [==============================] - 6s 4ms/step - loss: 0.2618 - accuracy: 0.9043 - val_loss: 0.3277 - val_accuracy: 0.8795\n",
      "Epoch 37/150\n",
      "1500/1500 [==============================] - 6s 4ms/step - loss: 0.2595 - accuracy: 0.9052 - val_loss: 0.3227 - val_accuracy: 0.8827\n",
      "Epoch 38/150\n",
      "1500/1500 [==============================] - 6s 4ms/step - loss: 0.2569 - accuracy: 0.9063 - val_loss: 0.3280 - val_accuracy: 0.8818\n",
      "Epoch 39/150\n",
      "1500/1500 [==============================] - 7s 5ms/step - loss: 0.2542 - accuracy: 0.9067 - val_loss: 0.3204 - val_accuracy: 0.8837\n",
      "Epoch 40/150\n",
      "1500/1500 [==============================] - 7s 5ms/step - loss: 0.2530 - accuracy: 0.9088 - val_loss: 0.3195 - val_accuracy: 0.8827\n",
      "Epoch 41/150\n",
      "1500/1500 [==============================] - 7s 5ms/step - loss: 0.2488 - accuracy: 0.9095 - val_loss: 0.3225 - val_accuracy: 0.8835\n",
      "Epoch 42/150\n",
      "1500/1500 [==============================] - 8s 5ms/step - loss: 0.2479 - accuracy: 0.9099 - val_loss: 0.3262 - val_accuracy: 0.8797\n",
      "Epoch 43/150\n",
      "1500/1500 [==============================] - 8s 5ms/step - loss: 0.2455 - accuracy: 0.9106 - val_loss: 0.3196 - val_accuracy: 0.8833\n",
      "Epoch 44/150\n",
      "1500/1500 [==============================] - 9s 6ms/step - loss: 0.2432 - accuracy: 0.9117 - val_loss: 0.3177 - val_accuracy: 0.8863\n",
      "Epoch 45/150\n",
      "1500/1500 [==============================] - 13s 9ms/step - loss: 0.2412 - accuracy: 0.9122 - val_loss: 0.3218 - val_accuracy: 0.8827\n",
      "Epoch 46/150\n",
      "1500/1500 [==============================] - 16s 11ms/step - loss: 0.2399 - accuracy: 0.9141 - val_loss: 0.3142 - val_accuracy: 0.8863\n",
      "Epoch 47/150\n",
      "1500/1500 [==============================] - 14s 9ms/step - loss: 0.2373 - accuracy: 0.9132 - val_loss: 0.3163 - val_accuracy: 0.8880\n",
      "Epoch 48/150\n",
      "1500/1500 [==============================] - 14s 9ms/step - loss: 0.2354 - accuracy: 0.9140 - val_loss: 0.3211 - val_accuracy: 0.8836\n",
      "Epoch 49/150\n",
      "1500/1500 [==============================] - 14s 9ms/step - loss: 0.2331 - accuracy: 0.9148 - val_loss: 0.3175 - val_accuracy: 0.8848\n",
      "Epoch 50/150\n",
      "1500/1500 [==============================] - 16s 11ms/step - loss: 0.2308 - accuracy: 0.9161 - val_loss: 0.3236 - val_accuracy: 0.8844\n",
      "Epoch 51/150\n",
      "1500/1500 [==============================] - 18s 12ms/step - loss: 0.2294 - accuracy: 0.9159 - val_loss: 0.3221 - val_accuracy: 0.8852\n",
      "Epoch 52/150\n",
      "1500/1500 [==============================] - 16s 11ms/step - loss: 0.2276 - accuracy: 0.9169 - val_loss: 0.3248 - val_accuracy: 0.8839\n",
      "Epoch 53/150\n",
      "1500/1500 [==============================] - 15s 10ms/step - loss: 0.2257 - accuracy: 0.9173 - val_loss: 0.3137 - val_accuracy: 0.8876\n",
      "Epoch 54/150\n",
      "1500/1500 [==============================] - 14s 10ms/step - loss: 0.2230 - accuracy: 0.9175 - val_loss: 0.3330 - val_accuracy: 0.8812\n",
      "Epoch 55/150\n",
      "1500/1500 [==============================] - 13s 9ms/step - loss: 0.2216 - accuracy: 0.9198 - val_loss: 0.3297 - val_accuracy: 0.8831\n",
      "Epoch 56/150\n",
      "1500/1500 [==============================] - 13s 9ms/step - loss: 0.2199 - accuracy: 0.9204 - val_loss: 0.3241 - val_accuracy: 0.8833\n",
      "Epoch 57/150\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1500/1500 [==============================] - 12s 8ms/step - loss: 0.2188 - accuracy: 0.9200 - val_loss: 0.3179 - val_accuracy: 0.8868\n",
      "Epoch 58/150\n",
      "1500/1500 [==============================] - 12s 8ms/step - loss: 0.2160 - accuracy: 0.9211 - val_loss: 0.3202 - val_accuracy: 0.8850\n",
      "Epoch 59/150\n",
      "1500/1500 [==============================] - 12s 8ms/step - loss: 0.2144 - accuracy: 0.9206 - val_loss: 0.3349 - val_accuracy: 0.8793\n",
      "Epoch 60/150\n",
      "1500/1500 [==============================] - 13s 8ms/step - loss: 0.2124 - accuracy: 0.9220 - val_loss: 0.3531 - val_accuracy: 0.8747\n",
      "Epoch 61/150\n",
      "1500/1500 [==============================] - 15s 10ms/step - loss: 0.2104 - accuracy: 0.9224 - val_loss: 0.3174 - val_accuracy: 0.8864\n",
      "Epoch 62/150\n",
      "1500/1500 [==============================] - 14s 10ms/step - loss: 0.2092 - accuracy: 0.9237 - val_loss: 0.3162 - val_accuracy: 0.8886\n",
      "Epoch 63/150\n",
      "1500/1500 [==============================] - 19s 12ms/step - loss: 0.2083 - accuracy: 0.9237 - val_loss: 0.3232 - val_accuracy: 0.8861\n"
     ]
    }
   ],
   "source": [
    "history = model.fit(x=x_train, y=y_train, batch_size=32,\n",
    "                    epochs=150, validation_split=0.2,\n",
    "                    shuffle=True,callbacks = [earlystopping])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#画图查看history数据的变化趋势\n",
    "pd.DataFrame(history.history).plot(figsize=(8, 5))\n",
    "plt.grid(True)\n",
    "plt.xlabel('epoch')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "测试集评估结果"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "313/313 [==============================] - 4s 14ms/step - loss: 0.3433 - accuracy: 0.8808\n",
      "loss:  0.3433445692062378\n",
      "accuracy:  0.8808000087738037\n"
     ]
    }
   ],
   "source": [
    "loss, accuracy = model.evaluate(x_test, y_test)\n",
    "print('loss: ', loss)\n",
    "print('accuracy: ', accuracy)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "根据以下表格，设置网络的初始化方法和激活函数，将Test Accuracy的最终结果填入下表。\n",
    "\n",
    "| 权重初始化 | 激活函数 | Test Accuracy |\n",
    "| :--------: | :------: | :-----------: |\n",
    "|   glorot_normal   |   tanh   | 0.8833000063896179 |\n",
    "|     he_normal     |   relu   | 0.7731000185012817  |\n",
    "| glorot_normal | elu |0.8808000087738037 |\n",
    "| glorot_normal | selu |0.8810999989509583  |"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.10"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
